package tec;
  
 class TestJaugeNaturel{

     JaugeNaturel jaugeTest; //déclaration


     private void jeVeuxVrai(boolean expr, String m) {
	 assert expr : "\nECHEC jeVeuxVrai <" + m + ">"; } 

     private void jeVeuxFaux(boolean expr, String m) {
	 assert !expr : "\nECHEC jeVeuxFaux <" + m + ">"; }

     void testDansIntervalle(){

	 jaugeTest  = new JaugeNaturel(2,5,3); // instanciation...
	 // System.out.println("la jauge est :"+jaugeTest.toString()); // pour le débogage
	 
	 assert jaugeTest.estVert() == true;
	 assert (jaugeTest.estBleu() ||  jaugeTest.estRouge()) == false;
	 
	 //ASSERT FAUX POUR LES BESOINS DE L'EXERCICE
	  //assert jaugeTest.estBleu() == true; //assert juste mettre false
	  //assert jaugeTest.estRouge() == true; //assert juste mettre false
	 System.out.println("Test DansIntervalle OK !");
     }

     void testInferieurIntervalle(){
         jaugeTest  = new JaugeNaturel(2,6,1); // instanciation
         jeVeuxVrai( jaugeTest.estBleu(),"bleu");
	 jeVeuxFaux( jaugeTest.estVert(),"vert");
	 jeVeuxFaux( jaugeTest.estRouge(),"rouge");
	 System.out.println("Test depart < vigieMin < vigieMax : OK ");
         
         jaugeTest  = new JaugeNaturel(2,6,2); // instanciation
         jeVeuxFaux( jaugeTest.estBleu(),"bleu");
	 jeVeuxVrai( jaugeTest.estVert(),"vert");
	 jeVeuxFaux( jaugeTest.estRouge(),"rouge");
	 System.out.println("Test depart = vigieMin < vigieMax : OK ");
         System.out.println("Test inferieur Intervalle OK !");
     }
     
     void testSuperieurIntervalle(){
         jaugeTest  = new JaugeNaturel(1,8,9); // instanciation
         jeVeuxFaux( jaugeTest.estBleu(),"bleu");
	 jeVeuxFaux( jaugeTest.estVert(),"vert");
	 jeVeuxVrai( jaugeTest.estRouge(),"rouge");
	 System.out.println("Test vigieMin < vigieMax < depart  : OK ");
         
         jaugeTest  = new JaugeNaturel(1,8,8); // instanciation
         jeVeuxFaux( jaugeTest.estBleu(),"bleu");
	 jeVeuxFaux( jaugeTest.estVert(),"vert");
	 jeVeuxVrai( jaugeTest.estRouge(),"rouge");
	 System.out.println("Test vigieMin < vigieMax = depart  : OK ");
         System.out.println("Test superieur Intervalle OK !");
     }
     
     void testDeplacement(){

	 jaugeTest  = new JaugeNaturel(0,3,1); // instanciation
	 jaugeTest.decrementer();
	 jaugeTest.decrementer();

	 jeVeuxVrai( jaugeTest.estBleu(),"bleu");
	 jeVeuxFaux( jaugeTest.estVert(),"vert");
	 jeVeuxFaux( jaugeTest.estRouge(),"rouge");
	 System.out.println("Test decrementer : OK ");

	 jaugeTest.incrementer();
	 jaugeTest.incrementer();
	 jaugeTest.incrementer();

	 jeVeuxVrai( jaugeTest.estVert(),"vert");
	 jeVeuxFaux( jaugeTest.estBleu(),"bleu");
	 jeVeuxFaux( jaugeTest.estRouge(),"rouge");
	 System.out.println("Test incrementer : OK ");

     }

    void lancer() {
     int nbTest = 0;
    
     System.out.print("."); nbTest++;

     testDansIntervalle();
     
     System.out.print("."); nbTest++;

     testInferieurIntervalle();
     
     System.out.print("."); nbTest++;
     testSuperieurIntervalle();
     
     System.out.print("."); nbTest++;

     testDeplacement();

     System.out.print("."); nbTest++;

     testExceptionCasLimites();

     // De la meme maniere, appel aux autres methodes de test.

     System.out.println("OK (" + nbTest + ")");
   }
     
     public void testExceptionCasLimites() { 
	 JaugeNaturel inverse=null;
	 JaugeNaturel egale=null;
	 try{
	     inverse = new JaugeNaturel(78, 13, 55);
	     assert false: "Pas  d'exception levee";
	 }catch(IllegalArgumentException e){
	 }
	 try{
	     egale = new JaugeNaturel(-42, -42, 55); 
	     assert false: "Pas  d'exception levee";
	 }catch(IllegalArgumentException e){
	 }
    
     }
     
}